package com.wing.cabinet.model.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.core.enums.IEnum;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.wing.mybatis.common.BaseEntity;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 超额申请表
 *
 * @author
 */
@Data
@NoArgsConstructor
@Accessors(chain = true)
@TableName("ord_above_the_quota_apply")
public class AboveTheQuotaApply extends BaseEntity<AboveTheQuotaApply> implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 审核状态:approve(0,待初审);reject(1,初审驳回);toaudit(2,初审通过);appRCheck(3,待复审);rCheckReject(4,复审驳回);rCheckAudit(5,复审通过）
     */
    public enum CheckStatus implements IEnum<Integer> {

        /**
        * 待初审
        */
        approve(0,"待初审"),
        /**
        * 初审驳回
        */
        reject(1,"初审驳回"),
        /**
        * 初审通过
        */
        toaudit(2,"初审通过"),
        /**
         * 待复审
         */
        appRCheck(3,"待复审"),
        /**
         * 复审驳回
         */
        rCheckReject(4,"复审驳回"),
        /**
         * 复审通过
         */
        rCheckAudit(5,"复审通过");

        private int code;
        private String desc;

        CheckStatus(int code,String desc){
            this.code=code;
            this.desc=desc;
        }

        @Override
        public Integer getValue(){
            return this.code;
        }

        public String getDesc(){
            return this.desc;
        }
    }

    /**
     * 创建者
     */
    private Long creator;

    /**
     * 修改者
     */
    private Long modifier;

    /**
     * 创建人
     */
    private String creatorName;

    /**
     * 修改人
     */
    private String modifierName;

    /**
     * day
     */
    private Integer day;

    /**
     * no
     */
    private Integer no;

    /**
     * 企业编号
     */
    private String enterpriseCode;

    /**
     * 领新申请编码
     */
    private String code;


    /**
     * 审核状态
     */
    private CheckStatus checkStatus;

    /**
    * 审核状态描述
    */
    @TableField(exist = false)
    private String checkStatusDesc;

    public String getCheckStatusDesc() {
        return checkStatus == null ? null : checkStatus.getDesc();
    }


    /**
     * 第一阶段审核人
     */
    private String auditPerson;

    /**
    * 第一阶段审核时间
    */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime auditTime;

    /**
     * 第二阶段审核人
     */
    private String twoAuditPerson;

    /**
    * 第二阶段审核时间
    */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime twoAuditTime;

    /**
     * 领新记录编号
     */
    private String inventoryOutCode;

    /**
     * 刀柜编号
     */
    private String mainCabCode;

    /**
     * 初审描述
     */
    private String auditRemark;

    /**
     * 复审描述
     */
    private String rcheckAuditRemark;

    /**
     * 权限组id
     */
    private Long authorityManageId;

    /**
     * 产品数量
     */
    private Integer quantity;

    /**
     * 总价
     */
    private BigDecimal totalPrice;

    /**
     * 第一审核人ID
     */
    private Long auditPersonId;

    /**
     * 第二审核人ID
     */
    private Long twoAuditPersonId;

    /**
     * 整体授信数量
     */
    private Integer creditQuantity;

    /**
     * 整体授信金额
     */
    private BigDecimal creditAmount;

    /**
     * 实际授信金额
     */
    private BigDecimal practicalLineOfCredit;

    /**
     * 实际授信数量
     */
    private Integer practicalCreditQuantity;

    /**
     * 领用复审额度
     */
    private BigDecimal recheckAmount;

    /**
     * 授信类型:money(0,金额);quantity(1,数量);
     */
    private Integer creditType;

    /**
     * 实际申请数量
     */
    private Integer acturlQuantity;

    /**
     * 实际申请金额
     */
    private BigDecimal acturlTotalPrice;


}
